MS Word内容批量查找替换工具(二)

您所在的位置:网站首页 查找下一个 快捷键 MS Word内容批量查找替换工具(二)

MS Word内容批量查找替换工具(二)

2023-04-15 06:57| 来源: 网络整理| 查看: 265

场景与问题

在前期的文章MS Word内容批量查找替换工具中,杰哥利用MS Word VBA开发制作了能够一次性查询并选择性替换多项内容的查找替换模块。该模块的特点是,可以在一个界面下同时查找5个内容,支持通配符使用,可以实现5个内容中任意一个内容的替换。基于此,使用者无需记忆前次查找的内容和文中所在位置,在一个界面里面可以迅速跳转,方便内容比较与替换。这个功能在统一术语的场景中非常有用,而术语统一又是写作、翻译、审稿、编辑加工、校对、质检等过程中必须进行的一步操作。杰哥在实践过程中发现,这个模块在以上过程中还是能提升一些效率的。

然而,不少使用者提出一个问题,在5项查找内容跳转的过程中,5项内容在文档中的前后位置关系经常被搞乱,导致在点击“上一处”或者“下一处”时有些内容被跳过,没有被找到。这样会打乱使用者的逻辑,导致内容修改不完全。

造成这个问题的原因在于,这个工具的使用逻辑是5项查找内容分别独立、互不影响。如下图中展示了当查找内容有两个时查找内容的跳转逻辑(3~5项查找内容同理):整个MS Word文档相当于一个字符流,图中以中间从上到下的蓝色粗线表示,假设本篇文档中存在6处查找内容1(右侧)和3处查找内容2(左侧),光标初始位置在查找内容1之上,当我们按照以下顺序点击按钮时,点击2次查找内容1的“下一处”(图中①②),点击1次查找内容2的“下一处”(图中③),点击1次查找内容1的“下一处”(图中④),点击1次查找内容2的“下一处”(图中⑤),点击1次查找内容1的“下一处”(图中⑥),标红框的部分会被跳过。因为该工具中向下查找的起点是光标所在位置,即上一次查找到的内容处,即在第①到②步跳过了第一个红框,第②到③步跳过了第二个红框,第④到⑤跳过了第三个红框。

解决思路与方法

解决这个问题的办法就是将多个查找内容从头到尾按照出现位置排序,每次查找时按照这个顺序依次跳转,即下图所示逻辑:

要将查找的所有内容按照出现位置从头到尾排序,杰哥利用VBA字典,将查找内容的出现位置作为“键”,将查找内容本身作为“值”,然后将字典按照键进行排序,就可以形成一个查找内容位置的升序数组,然后以光标所在位置为起点在这个数组中进行定位,实现多项查找内容的混合依次跳转。其关键代码如下,其他代码大家可以参考源文件。

Private Sub 内容放入字典(txt_box As TextBox)If txt_box.Text "" Then With doc_find.Content.Find .ClearFormatting .Forward = True .Format = False .MatchWildcards = True .Text = txt_box.Text Do .Execute If dic_find.Exists(.Parent.start) = False Then dic_find.Add .Parent.start, txt_box.Text End If Loop Until .Found = False End WithEnd Ifarr_find = dic_find.Keysarr_find = UDF_冒泡升序排序一维数组(arr_find) '此为自定义函数,实现数组内容升序排序End Sub

工具界面

如上图所示,整个窗体分为5个区域:查找内容输入与计数区、状态显示区、替换内容输入区、跳转与替换操作区、常用通配符显示区。使用者可以同时输入最多5项查找内容,然后替换成同一个内容。状态显示区的“当前次序”表示所有查找内容总排序中其中一项查找内容的排序,“当前位置”表示当前查找内容所在的字符串在整篇文档字符流中的位置,“总计数”表示所有查找内容的出现次数之和。常用通配符显示区中可以自定义一些常用但由于字符生僻而不便于输入的内容,方便使用者直接复制,在查找框中粘贴,如图中放入了表示一个汉字的通配符“([一-龥])”。通配符的使用请见MS Word查找替换全攻略(四)。

使用演示如下:

最后附上该模块的下载链接,欢迎大家下载使用。

模块W 内容统计与定位20230303_02_01①界面更新②添加当前字符位置

勤不知疲,终身学习;笔耕不辍,自强不息!感谢大家关注!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3